home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 / Ham Radio 2000.iso / ham2000 / tcp_ip / os2 / pmnos11s / mailbox.h < prev    next >
Text File  |  1993-09-06  |  6KB  |  155 lines

  1. #ifndef _MAILBOX_H
  2. #define _MAILBOX_H
  3. /* Defines for the ax.25 mailbox facility */
  4. #define NUMMBX        10        /* max number of mailbox sessions */
  5. #ifndef _TIMER_H
  6. #include "timer.h"
  7. #endif
  8. #ifndef _AX25_h
  9. #include "ax25.h"
  10. #endif
  11. #ifndef _CONFIG_H
  12. #include "config.h"
  13. #endif
  14.  
  15. /* a mailbox entry */
  16. struct let {
  17.     long    start;
  18.     long    size;
  19.     int    status;
  20. };
  21.  
  22. #define MAXPWDLEN 30
  23. #define MBXLINE     128     /* max length of line */
  24. struct mbx {
  25.     int state ;                /* mailbox state */
  26. #define MBX_LOGIN    0        /* trying to log in */
  27. #define MBX_CMD        1        /* in command mode */
  28. #define MBX_SUBJ    2        /* waiting for a subject line */
  29. #define MBX_DATA    3        /* collecting the message */
  30. #define MBX_REVFWD    4        /* reverse forwarding in progress */
  31. #define MBX_TRYING    5        /* pending forwarding connection */
  32. #define MBX_FORWARD    6        /* established forwarding connection */
  33. #define MBX_GATEWAY 7       /* gatewaying somewhere */
  34. #define MBX_READ    8       /* reading a message */
  35. #define MBX_UPLOAD  9       /* uploading a file */
  36. #define MBX_DOWNLOAD 10     /* downloading a file */
  37. #define MBX_CONVERS 11      /* Using convers mode */
  38. #define MBX_CHAT    12      /* Chatting with sysop */
  39. #define MBX_WHAT    13      /* Listing files */
  40. #define MBX_SYSOPTRY 14     /* Trying sysop */
  41. #define MBX_SYSOP   15      /* Is sysop */
  42.     int family;             /* Type of incoming connection */
  43.     char name[20] ;         /* Name of remote station */
  44.     char call[AXALEN];      /* User call in shifted form, if applicable*/
  45.     char *to ;          /* To-address in form user or user@host */
  46.     char *origto ;            /* Original To-address, if rewritten */
  47.     char *tofrom ;            /* Optional <from in to-address */
  48.     char *origbbs ;         /* Original bbs, if tracing R: lines */
  49.     char *tomsgid ;         /* Optional $msgid in to-address */
  50.     char *subject ;         /* Message subject */
  51.     char *date ;            /* Date of the message */
  52.     FILE *tfile ;           /* Temporary file for message, or */
  53.                     /* forwarding file. */
  54.     FILE *tfp;              /* Temporary file when reading R: headers */
  55.     char line[MBXLINE+1] ;  /* Room for null at end */
  56.     int mbnum ;        /* which mailbox session is this? */
  57.     int sid ;        /* Characteristics indicated by the SID */
  58.                 /* banner of the attaching station.  If */
  59.                 /* no SID was sent, this is zero.  If an */
  60.                 /* SID of any kind was received, it is */
  61.                 /* assumed that the station supports */
  62.                 /* abbreviated mail forwarding mode. */
  63. #define    MBX_SID        0x01    /* Got any SID */
  64. #define    MBX_RLI_SID    0x02    /* This is an RLI BBS, disconnect after F> */
  65. #define MBX_HIER_SID    0x04    /* The BBS supports "hierarchical routing */
  66.                 /* designators." */
  67.                 /* Space here for others, currently not of */
  68.                 /* interest to us. */
  69. #define MBX_EXPERT  0x08        /* expert user status */
  70. #define MBX_AREA    0x10        /* show area in prompt */
  71. #define MBX_NRID    0x20        /* use netrom ident */
  72. #define MBX_LL      0x80        /* LAN-LINK system */
  73.     char stype ;        /* BBS send command type (B,P,T, etc.) */
  74.     int type ;        /* Type of session when invoking "chat" */
  75.     int user;        /* User linkage area */
  76.     char escape;        /* Escape character */
  77.     int privs;        /* Privileges (taken from Ftpusers file) */
  78. #define AX25_CMD    8    /* AX.25 gateway operation allowed */
  79. #define TELNET_CMD    16    /* Telnet gateway operation allowed */
  80. #define NETROM_CMD    32    /* NET/ROM gateway operation allowed */
  81. #define SYSOP_CMD    64    /* Remote sysop access allowed */
  82. #define EXCLUDED_CMD    128    /* This user is banned from the BBS */
  83. /* 256 and 512 are used in PPP*/
  84. #define NO_SENDCMD  1024    /*Disallow send command*/
  85. #define NO_READCMD  2048    /*Disallow read command*/
  86. #define NO_3PARTY   4096    /*Disallow third-party mail*/
  87. #define IS_BBS      8192    /*This user is a bbs*/
  88. #define IS_EXPERT    16384    /*This user is an expert*/
  89. #define NO_CONVERS  32768   /*Disallow convers command */
  90.  
  91.     char *path;     /* Directory path */
  92.     char *startmsg;     /* Message to be sent at connect through any
  93.                 /* of the gateways */
  94.     int current;        /* the current message number */
  95.     int nmsgs;        /* number of messages in this mail box */
  96.     int newmsgs;        /* number of new messages in mail box */
  97.     int change;        /* mail file changed */
  98.     int anyread;        /* true if any message has been read */
  99.     FILE *mfile;        /* mail data file pointer */
  100.     char area[64];        /* name of current mail area */
  101.     int isarea;         /* is the current mail area private or public ? */
  102.     int morerows;       /* Number of lines before -more- prompt */
  103.     int update;         /* Update the user preferences */
  104. /* Next two are used by userlog code - WG7J */
  105.     long lastread;        /* number of last read message in area */
  106.     long newlastread;   /* id of new last listed message in area */
  107.     long mboxsize;        /* size of mailbox when opened */
  108.     long mysize;        /* size of my private mailbox */
  109.     struct let *mbox;
  110.     struct timer tdisc; /* Inactivity timeout timer - WG7J */
  111.     char *stdinbuf;        /* the stdio buffer for the mail file */
  112.     char *stdoutbuf;    /* the stdio file io buffer for the temp file */
  113. } ;
  114. #define     NULLMBX        (struct mbx *)0
  115.  
  116. /* Structure used for automatic flushing of gateway sockets */
  117. struct gwalarm {
  118.     int s1;
  119.     int s2;
  120.     struct timer t;
  121. };
  122.  
  123. /* In mailbox.c */
  124. extern struct mbx *Mbox[NUMMBX] ;
  125. extern char Noperm[];
  126. extern char Nosock[];
  127. extern void (*Listusers) __ARGS((int s));
  128. extern int ThirdParty;
  129. extern int Mtrace;
  130.  
  131. int dombescape __ARGS((int argc,char *argv[],void *p));
  132. int mbxrecvline __ARGS((struct mbx *m));
  133. int gw_connect __ARGS((struct mbx *m,int s,struct sockaddr *fsocket,int len));
  134.  
  135. void mbx_incom __ARGS((int s,void *t,void *p));
  136. int domboxdisplay __ARGS((int argc,char *argv[],void *p));
  137. struct mbx *newmbx __ARGS((void));
  138. void exitbbs __ARGS((struct mbx *m));
  139. int domboxbye __ARGS((int argc,char *argv[],void *p));
  140. int mbx_parse __ARGS((struct mbx *m));
  141. void changearea __ARGS((struct mbx *m,char *area));
  142. char *rewrite_address __ARGS((char *addr));
  143. void listusers __ARGS((int s));
  144.  
  145. /* In forward.c: */
  146. int dorevfwd __ARGS((int argc,char *argv[],void *p));
  147. int dombtimer __ARGS((int argc,char *argv[],void *p));
  148. int dombkick __ARGS((int argc,char *argv[],void *p));
  149.  
  150. /* In tipmail.c */
  151. extern unsigned Tiptimeout;
  152.  
  153. #endif    /* _MAILBOX_H */
  154.  
  155.